package java基础.java类的加载顺序;

/**
 * Created by Administrator on 2017/8/16.
 */
public class Base {
    private String baseName = "base";
    public Base()
    {
        callName(); //子类有这个方法，调用的就是子类的
    }

    public void callName()
    {
        System. out. println(baseName);
    }

    static class Sub extends Base  //静态内部类改成外部非静态类，效果也是一样
    {
        private String baseName = "sub";
        public void callName()
        {
            System. out. println (baseName) ;
        }
    }
    public static void main(String[] args)
    {
//        Base b = new Sub();  //输出：null
//        Base b = new Base();  //输出：Base
        Sub sub = new Sub();
    }
}
// new Sub();在创造派生类的过程中首先创建基类对象，然后才能创建派生类。
//         创建基类即默认调用Base()方法，在方法中调用callName()方法，
//         由于派生类中存在此方法，则被调用的callName()方法是派生类中的方法，
//         此时派生类还未构造，所以变量baseName的值为null